www.gusucode.com > tsp(旅行商问题) 利用matlab遗传算法、模拟退火算法以及lingo动态规划求解 > tsp(旅行商问题) 利用matlab遗传算法、模拟退火算法以及lingo动态规划求解/matlab/sa/trp.m

    function [f,T]=trp(d,t0,tf)
% f为目标函数最优值,T为最优路线,d为距离矩阵,t0为初始温度,tf为结束温度
[m,n]=size(d);
L=100*n;
t=t0;
pi0=1:n;
min_f=0;
for k=1:(n-1)
    min_f=min_f+d(pi0(k),pi0(k+1));
end
min_f=min_f+d(pi0(n),pi0(1));
p_min=pi0;
while t>tf
    for k=1:L
        kk=rand;
        [d_f,pi_1]=exchange_2(pi0,d);
        r_r=rand;
        if d_f<0
            pi0=pi_1;
        elseif exp(d_f/t)>r_r
            pi0=pi_1;
        else 
            pi0=pi0;
        end
    end
    f_temp=0;
    for k=1:n-1
        f_temp=f_temp+d(pi0(k),pi0(k+1));
    end
       f_temp=f_temp+d(pi0(n),pi0(1));
       if min_f>f_temp
           min_f=f_temp;
           p_min=pi0;
       end
       t=0.87*t;
end
f=min_f;
T=p_min;